Real time computer generated image systems are being designed to provide realistic image reproduction for a variety of simulator systems, such as tank simulators and flight simulators. In these systems, image generation can be broken down into three separate processing stages: controller, geometry processor, and display processor. These three processing stages each work independently on data corresponding to one of three consecutive images to be displayed. The controller processes data on an image or scene for a fixed time and then passes its processed data to the geometry processor. The geometry processor has an equal amount of time to do its calculations and at the end of that time its results are sent to the display processor. The display processor processes the data for displaying it on a video display. For each time interval, all three processors are kept busy, so that at any given time, the processors are working on three separate scenes. Each section processes inputs and generates outputs during the interval, so data flows to the three stages in a sequential manner. The computation load is spread out among the specialized processor sessions so this allows new scenes to be displayed each field or frame time.
To maximize the efficiency of the processors, a scene or image (which is eventually displayed) is divided into a plurality of spans for processing. Conceptually, a span can be thought of as a small rectangular area on the display screen. Each span is comprised of a matrix of pixels. An object (such as a tank) which is to be displayed is comprised of individual faces, where each face is bounded by straight edges, i.e., a face is an uninterrupted or continuous area. A simple example is a monocolor two-dimensional box which can be defined as a single face. As is evident, a face may cover a number of spans and a span may contain a number of faces. The overall goal in an area (span) processor is to maximize the efficiency of the above mentioned processors and provide a realistic correct image while satisfying real time processing constraints.
In a typical flight simulator system, inputs are received by a controller section and passed to a geometry processor. The input received by the controller are pilot inputs supplied to an environmental definition and converted to pixel video display information. The geometry processor reads from a data-base description of objects that are potentially visible and stored in a three-dimensional digital representation of the screen. The objects that are read are rotated in display coordinates using rotation matrices calculated in the controller. The geometry processor mathematically projects the three-dimensional data onto a two-dimensional display window. Previous geometry processors calculated objects which were in front or behind each other and stored this information in a priority list. Since each object processed is made up of individual faces, where each face is in the form of a part unbounded by straight edges, the priority list contained the order of all faces in the scene starting with the first face. In other words, the highest priority face was first and the last face in the list was the lowest priority face. Previously, whenever two faces overlapped on the display, the higher priority face was visible and the lower priority face was obscure. However, geometry processors have three basic shortcomings. First, they cannot process interpenetrating faces; second, they cannot handle priority circularities in real time; and third, they have difficulty resolving priority of moving objects.
FIG. 1 shows an example of interpenetrating faces in which face B penetrates face A. As is evident, it is difficult to determine which face has the higher priority.
FIG. 2 shows an example of priority circularity where face C has higher priority than face D, and face D has higher priority than face E; however, face E has higher priority than face C. These problems can be solved by a "z" or depth buffer priority scheme in accordance with the present invention.